﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DAL;
using DAL.Infrastructure;
using DAL.Interfaces;
using DAL.Models;
using BAL.Infrastructure;
using BAL.Interfaces;
using System.Data;
using System.Data.Entity;
using System.Web;
using BibliotecaVirtual.Models;

namespace BAL
{
    public class BALUsuarioSocio : ServiceBase<UsuarioSocios>,  IUsuarioSocioService
    {
        public BALUsuarioSocio(IRepository<UsuarioSocios> repository, IApplicationContext context) 
            : base(repository, context)
        {

        }

        public override IQueryable<UsuarioSocios> GetAllValidados()
        {
            
            try
            {
                return _repository.GetAllValidados().Include(m => m.Socios).Include(m => m.aspnet_Users);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public UsuarioSocios GetValidado(UsuarioSocios usuarioSocio)
        {
            UsuarioSocios item = new UsuarioSocios();
            List<UsuarioSocios> usuariosSocios = new List<UsuarioSocios>();
            IEnumerable<UsuarioSocios> usuariosSociosEnum;
            try
            {
                usuariosSocios = _repository.GetAllValidados().ToList<UsuarioSocios>();
                usuariosSociosEnum = usuariosSocios.Where(x => x.aspnet_Users.UserId == usuarioSocio.aspnet_Users.UserId); // se cambio el UserID por aspnet_Users.UserId
                if (usuariosSocios != null)
                {
                    item = usuariosSocios.First();
                }
                return item;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public Socios GetSocioByGuid(Guid key)
        {
            Socios item = new Socios();
            List<UsuarioSocios> usuariosSocios = new List<UsuarioSocios>();
            IEnumerable<UsuarioSocios> usuariosSociosEnum;
            try
            {
                usuariosSocios = _repository.GetAll();
                if (usuariosSocios.Count()>0){
                    usuariosSociosEnum = usuariosSocios.Where(x => x.aspnet_Users.UserId == key); // se cambio el UserID por aspnet_Users.UserId
                    if (usuariosSocios!=null){
                        item = usuariosSocios.First().Socios;
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return item;
        }

    }
}
